// https : // iai.sh.cn/problem/20
#include <bits/stdc++.h>
using namespace std;

// 扩展的欧几里得算法，返回gcd和x, y
int extendedGCD(int a, int b, int &x, int &y) {
    if (b == 0) {
        x = 1;
        y = 0;
        return a;
    }
    int gcd = extendedGCD(b, a % b, y, x);
    y -= (a / b) * x;
    return gcd;
}

// 计算满足条件的解的数量
int countSolutions(int u, int a, int b) {
    int ans = 0;
    int g = __gcd(a, b); // 计算gcd
    // 遍历所有可能的z值
    for (int z = 0; z <= u; z++) {
        // 判断是否有解
        if (z % g == 0) {
            // 计算特解
            int x0, y0;
            extendedGCD(a, b, x0, y0);
            x0 *= z / g;
            y0 *= z / g;

            // 计算k的范围
            int k_min = (0 - x0) / (b / g);
            int k_max = (u - x0) / (b / g);

            // 计算有效的k的数量
            ans += (k_max - k_min + 1);
        }
    }
    return ans;
}

int main() {
    int n, a, b;
    cin >> n >> a >> b;
    int total = 0; // 初始化总和
    for (int u = 0; u <= n; u++) {
        total += countSolutions(u, a, b); // 直接在主函数中求和
    }
    cout << total; // 输出满足条件的总位置数量
    return 0;
}